\chapter{Introducción}
\section{Propósito}
Con esta especificicación de requisitos se pretende establecer las bases para el desarrollo de una 
aplicación software cliente-servidor enfocada a la gestión integral de una empresa de comercio textil. Para ello, se utiliza 
una infraestructura que consta de un servidor central y tantos servidores locales como tiendas tenga el comercio.
En cada tienda existirá un número variable de terminales punto de venta. En otros departamentos habrá terminales no enfocados a la venta, sino a la gestión.

Esta especificación va dirigida a los desarrolladores de la aplicación.
\section{Ámbito del sistema}
El sistema a desarrollar permite gestionar los almacenes (tanto central como los de las diferentes tiendas)
de la empresa de comercio textil. La aplicación está dividida en módulos, que podrán instalarse de forma individual 
en función del uso que vaya a hacerse del terminal.
La aplicación, que llevará por nombre \textsc{Advanced Shop Manager} (en adelante, ADVSM) presenta las 
siguientes características:

\renewcommand{\labelenumi}{\roman{enumi}.}
	\begin{enumerate}
		\item Gestionar el proceso de venta de las tiendas que implica la actualización de existencias.
		\item Permite mantener una relación actualizada de los clientes y la generación de estadísticas de venta.
		\item Optimizar el proceso de distribución (llegada de nuevas prendas, reposiciones...)
		\item Como funcionalidad opcional se presenta el módulo de personal que abarca la gestión contratos, bajas, períodos
		vacacionales...
	\end{enumerate}
Queda fuera de esta versión de la aplicación la ampliación del módulo de personal (nóminas, cotizaciones sociales, pago de impuestos...), 
un módulo de gestión financiera para todo el grupo (patrimonio, activos, resultados de ejercicio...) y el módulo de venta on-line.

La principal meta del sistema es la gestión unificada de los procesos que rodean la venta al público
en el sector textil. La aportación principal de la aplicación frente al resto de software existente en el mercado
para la administración de cadenas textiles es la denominada ``gestión de zonas calientes'', que permite conocer 
el volumen de ventas de cada zona de la tienda, que en la mayoría de establecimientos no se hace y dónde se 
hace es de forma manual.
% TODO - ¿referencias a documentos superiores?
\section{Definiciones, acrónimos y abreviaturas}
Remitirse al documento Glosario, \texttt{RQ\_GLO\_Glosario}.
%\printglossaries
% el glosario va a ir como documento aparte.
\section{Referencias}
\begin{itemize}
\item \emph{IEEE Recommended Practice for Software Requirements Specifications}, 
Software Engineering Standards Committee of the IEEE Computer Society, 25 june 1998
\item \emph{Ley Orgánica 15/1999, de 13 de diciembre, de Protección de Datos de Carácter Personal}, publicada en
el \gls{BOE} con fecha 14 de diciembre de 1999.
\item \emph{Ley 37/1992, de 28 de diciembre, del Impuesto sobre el Valor Añadido}, publicado en el \gls{BOE} con fecha
29 de diciembre de 1992.
\item \emph{Real Decreto 80/1996, de 26 de enero, por el que se modifica el reglamento del impuesto sobre el valor añadido, aprobado por el Real Decreto 1624/1992, de 29 de diciembre, y el Real Decreto 2402/1985, de 18 de diciembre}, publicado en el \gls{BOE}
con fecha 31 de enero de 1996.
\end{itemize}

\section{Resumen}
Este documento contiene las funcionalidades generales y requisitos básicos necesarios de la apliación.
No incluye referencias a ninguna implementación concreta ni a los métodos necesarios para llevarla a cabo.
Tampoco se especificará el equipo necesario para acometer el desarrollo de la aplicación.

La primera parte enmarca el contexto en el que se ejecuta la aplicación adaptada a la realidad del cliente y se detalla la perspectiva 
y objetivos de la aplicación, así como restricciones del desarrollo y uso (restricciones 
legales, físicas, de hardware, de capacitación o de implementación).

Para finalizar, la segunda parte describe los requisitos específicos de a aplicación siguiendo el modelo detallado en
el Anexo A.5 del IEEE 830-1998, que organiza los requisitos en función de la característica. Se ha escogido este modelo
por estar la aplicación dividida en cuatro grandes bloques: clientes, gestión de la tienda, personal y distribución.

\chapter{Descripción general}
\section{Perspectiva del producto}
El futuro producto software gestiona varias bases de datos (que llevan el control de inventario, el registro de clientes...) y el control de acceso de los usuarios a las mismas. No depende de ningún 
sistema mayor, puesto que en el marco de la empresa no existe. Es por tanto independiente, con un sistema modular para gestionar las diferentes áreas dentro de la empresa.
\section{Funciones del producto}
La aplicación \gls{ADVSM} está diseñada para el desepeño de forma eficiente las siguiente funciones:
	\begin{itemize}
		\item {\textbf{Ventas: }} Podrá gestionar todo el proceso de ventas desde la identificación de los artículos vendidos, su actualización en el almacén, la generación de la factura y/o
			ticket y el cobro. Como funcionalidad novedosa está la gestión de las \glspl{zonaCaliente} de las tiendas.
		\item {\textbf{Clientes: }} Mantiene actualizado una base de datos de clientes con la posibilidad de notificarles novedades y eventos de forma ágil.
		\item {\textbf{Distribución: }}Controla todo el proceso de distribución desde la recepción de la mercancía en el almacén central hasta su llegada a los almacenes de las tiendas, así como permite 
			optimimizar el proceso de solicitud y tramitación de reposiciones.
		\item {\textbf{Personal: }}La gestión de permisos de los usuarios nos obliga a mantener una mínima base de datos de personal por lo que cabe la posibilidad de ampliarla y ofrecérsela 
			al cliente como un módulo más de la aplicación.
	\end{itemize}
\section{Características del usuario}
Los usuarios del sistema son en su mayoría trabajadores de las tiendas que se sitúan en una horquilla de entre 30 y 50 años de edad, con nivel de estudios básico y amplia experiencia en el 
sector de la venta minorista. Los empleados están habituados al manejo de herramientas de asistencia a la venta de este tipo que actualmente existen en el mercado.
\section{Restricciones}
En esta sección encontramos el resto de limitaciones impuestas sobre los desarrolladores del producto.
	\renewcommand{\labelenumiii}{(\arabic{enumii})}
	\begin{enumerate}

	\item Políticas de empresa:
	
		Los datos de carácter personal que los clientes suministren mediante nuestros formularios de registro en las tiendas
		serán incorporados a un fichero de datos personales cuyo responsable será la empresa textil.

		La información contenida en el fichero se usará tanto para la correcta identificación de los clientes registrados que solicitan
		servicios personalizados, como para la realización de estudios estadísticos que permitan aumentar los volúmenes de ventas, 
		diseñar mejoras en los servicios prestados, llevar a cabo tareas básicas
		de administración y poder comunicar incidencias, ofertas o novedades a los clientes registrados.

		Nuestra política de empresa asegura, en todo caso, el ejercicio de los derechos de acceso, rectificación, cancelación,
		información de valoraciones y oposición, en los términos establecidos en la legislación vigente. Por ello, en conformidad con 
		la \gls{lopd} y en la normativa de desarrollo, se garantiza la adopción de las medidas necesarias para asegurar el tratamiento confidencial de dichos datos.
			
	\item Limitaciones de hardware:
		\begin{itemize}
		\item El servidor local requiere de un ancho de banda de 50MB/s para conectar con los terminales locales. 
			\footnote{Bajo estas condiciones, el servidor soportará hasta 10 terminales locales en puntos críticos a la vez, soportando hasta 30 terminales con ralentizaciones mínimas del sistema.}
		\item El servidor local requiere de un disco duro de al menos 500GB de capacidad. Se guardarán sobre todo imágenes y el historial de la tienda.
		\item El servidor local requiere de una conexión a internet de al menos 10Mb/s subida, 10Mb/s bajada.
		\item El servidor central requiere de al menos 5TB de capacidad útil (es decir, 5TB disponibles tras el \gls{RAID} de discos).
		\item El servidor central requiere de dos discos duros de igual capacidad en \gls{RAID} 0 para redundancia de los datos.
		\item El servidor central requiere de una conexión de al menos 100Mb/s subida, 100Mb/s bajada.
			\footnote{Bajo estas condiciones, el servidor central puede renovar 10 servidores de tiendas cada 5 minutos, siendo capaz de realizar actualizaciones simultáneas de 100 tiendas / minuto en condiciones normales.}
		\end{itemize}
	\item Lenguaje(s) de programación: Se utilizará íntegramente \Gls{java} para la aplicación y \gls{mysql} para las bases de datos.
	
	\item Protocolos de comunicación:
		 \begin{itemize}
		\item El servidor local realiza un \emph{update} cada vez que se inicia (presumiblemente por la mañana) y actualiza la base de datos local y modificaciones, si las hay.
		\item El servidor local realiza un \emph{commit} cada vez que se apaga (presumiblemente por la noche) de cambios en la base de datos local. Esto permite la actulización de información en el servidor central.
		\end{itemize}

	\item Consideraciones acerca de la seguridad:
		\begin{itemize}
		\item Los datos de los clientes y empleados se guardan encriptados con \gls{RSA}-1024.
		\item Las contraseñas se guardan encriptadas con \gls{RSA}-2048.
		\item Copias de seguridad periódicas cada dos semanas a un tercer disco duro de igual o mayor capacidad que el servidor central. 
		\end{itemize}
	\end{enumerate}
	

\section{Supuestos y dependencias}
La aplicación estará preparada para funcionar bajo sistemas de la familia Microsoft Windows(R), luego se asume que la empresa cuenta
con equipos con dichas características. Por lo demás, un equipo con Intel Pentium(R) IV a 1,6 GHz, 512 MB de memoria RAM y 80 GB de disco duro (libres 600 MB) bastarán para un experiencia
cómoda de uso.

Se presupone también que se cuenta con lectores de código de barras así como conexión de banda ancha a Internet (mínimo 1 Mbit/s bajada, 256 kB/s subida) así como
un infraestructura de red en buen estado, que conste de servidor central y servidores locales en cada uno de los establecimientos.

Además, algunos factores que pueden producir cambios en la \gls{SRS} son:
	\begin{itemize}
		\item Cambios en los equipos informáticos que posee la empresa (e.g. cambio de sistema operativo).
		\item El sistema de venta o distribución sufre cambios por parte de la empresa.
		\item El marco legal laboral cambia y entonces la funcionalidad que se encarga de contratar/gestionar el personal no se ajusta a la realidad.
		\item Cambios en las políticas de empresa (cambios en las formas de pago, mercados o sectores a lo que se dirige, en los productos que se venden...)
	\end{itemize}

\section{Requisitos futuros}
	El cliente ha manifestado que si la aplicación se ajusta y adapta a sus necesidades es bastante probable que vuelva a
	contratarnos para futuras extensiones del programa. En la que más ha hecho incapié ha sido en la gestión del personal (horarios, periodos de \gls{ILT}).
	También le hemos ofertado un módulo de gestión financiera al que el cliente no ha puesto muchos reparos, pero que queda fuera de este proyecto.

	Además, si la empresa se expande por encima de los umbrales que la aplicación soporta, será necesario ampliar los flujos de datos entre las bases de datos locales y central,
	lo que requerirá cambios en la aplicación para sopotar dicho tráfico de datos.

	En un futuro se considerará el uso de dispositivos táctiles para el manejo de la aplicación.

\chapter{Requisitos específicos}
\section{Consideraciones previas}
Es preciso destacar algunos convenios de datos que se seguirán durante la presente especificación de requisitos software.
Puesto que la aplicación está diseñada para operar principalmente en España, los formatos de datos siguen las convenciones habituales 
del país. Principalmente, se tiene:
	\begin{description}
		\item[\textbf{Fecha}] Las fechas seguirán el formato DD/MM/AAAA (DD: día, MM: mes, AAAA: año).
		\item[\textbf{Hora}] En formato 24H, HH:MM:SS (HH: hora, MM: minutos, SS: segundo).
		\item[\textbf{Dirección y código postal}] Se seguirán las directrices que marca la Sociedad Estatal de Correos y Telégrafos, S.A.
		\item[\textbf{Números de teléfono}] Números enteros de nueve cifras.
		\item[\textbf{NIF}] El número de identificación fiscal sigue los criterios que marca el Real Decreto 1065/2007 %% Creo que es este.
		\item[\textbf{Moneda}] Los importes de las ventas, así como facturación, nóminas, etcétera se manejarán en euros.
	\end{description}
	Para los correos electrónicos, se solicitará verificación de la dirección electrónica mediante el envío de un email de confirmación.
	
	\label{datosCliente}Así, cuando se haga mención a \emph{datos del cliente}, se entenderá que los datos son: nombre, apellidos, dirección, localidad, código postal, provincia
	país, teléfono (tanto fijo como móvil) y correo electrónico.
	
	Otros datos que el sistema maneja son
		\begin{description}
			\item[\textbf{Número de la Seguridad Social}] Se almacenarán como 13 caracteres alfanuméricos, tal y como prescribe la normativa del Instituto Nacional de la Seguridad Social.
			\item[\textbf{Cuenta bancaria}] Los número de cuenta corriente cliente (CCC) se guardarán siguiendo el formato internacional IBAN.
 			\item[\textbf{Tipo de contrato}] Serán los tipos de contrato que la legislación laboral vigente en España tenga en consideración.
 		\end{description} 
 		
 	\label{datosEmpleado}Así, cuando se haga referencia a \emph{datos de empleado}, se entenderá que los datos son: los mismos datos que en \emph{datos de cliente} y además número de la Seguridad
 	Social, número de cuenta bancaria, tipo de contrato y su fecha de finalización.
 	
 	\label{horarioTienda}Además, se considera \emph{apertura de tienda} la hora (aproximada) a la que el personal encargardo de abrir la tienda al público debe fichar. Esta hora no tiene por qué ser homogénea y estará almacenada en el servidor central, para 
 	que puedan realizarse las sincronizaciones automáticamente antes de la apertura. 
 	
 	De la misma forma, se considera \emph{cierre de tienda} la hora (aproximada) a la que cada tienda cierra la contabilidad de caja del día, considerando éste el último acto a realizar por parte del 
 	personal de tienda antes de su cierre hasta la próxima jornada. Esta hora no tiene por qué ser homogénea y estará almacenada en el servidor central para que las sincronizaciones puedan hacerse justo después de esta hora.
 	
\section{Interfaces externos}
\renewcommand{\labelenumii}{\roman{enumii}.}
\renewcommand{\labelenumiii}{(\arabic{enumiii})}
	\begin{description}
	\item{\textbf{Interfaces de usuario }}  
	La interfaz de usuario es orientada a \glspl{ventana}. De forma genérica, la interacción del usuario con el sistema se producirá a través de estas. Además, la interfaz se completa
	con formularios, barras y cuadros de texto.

	La interfaz de usuario es común para todos los miembros de la empresa, variando según el departamento los módulos instalados o accesibles. En cualquier caso, un empleado que inicie sesión en una versión de la aplicación con módulos a los que no tiene acceso los tendrá ocultos, siendo de esta manera posible la distribución de una única compilación para toda la empresa.
	La interfaz tendrá una tasa de refresco de al menos 30 \gls{fps}, y una respuesta gráfica a eventos de teclado o ratón en menos de 0.033 segundos, para ofrecer una experiencia cómoda y fluida al usuario.
	\renewcommand{\labelenumiv}{\alph{enumiv})}
	\begin{enumerate}
		\item Todas las ventanas serán como mucho de 800px (píxeles) de ancho y 600px de alto, para ser completamente visibles en configuraciones gráficas que respondan a proporciones 4:3 o resolución superior.
		\item El modo pantalla completa extiende la \gls{ventana} de la aplicación de forma proporcional a la resolución establecida en el terminal. Todos los elementos gráficos también amplían su tamaño con el mismo factor.
		\item Las \glspl{ventana} tendrán un tamaño mínimo que el usuario no podrá reducir (dicho tamaño será aquel en el que todos los elementos sean totalmente visibles y operativos) para evitar malinterpretaciones de la información prestada y/o recibida por la aplicación.
%		\item \Gls{ventana}: Éstas son la principal forma de interacción que el usuario tiene con la aplicación.
%		\item \Gls{ventana} principal: Posee hasta 6 pestañas (Stock, Empleados, Clientes, Ventas, Gestión, y Login-Administrador) que podrán estar o no implementadas según los módulos estén presentes el terminal que estemos tratando. (e.g. la compilación para un vendedor no incluye la pestaña ``empleados'').
%		Presentará el logotipo de la aplicación en la esquina superior izquierda, junto al nombre de la aplicación (\gls{ADVSM}) y la versión de compilación sobre la que se está trabajando.
%		
%		Además, tendrá una \gls{barraEstado} en la parte inferior de la aplicación que en todo momento indicará los siguientes datos: Tienda actual, Empleado utilizando la aplicación, Cliente con el que se está trabajando, y una \gls{barraProgreso} indicando el desarrollo de cualquier búsqueda en curso. En caso de haber múltiples búsquedas simultáneas, se mostrará el progreso de la ahora se esté ejecutando junto a un número entre paréntesis indicando la cantidad de búsquedas en cola / realizándose simultáneamente.
%		Por supuesto, estos campos son susceptibles de aparecer o no según qué permisos tenga el empleado con sesión iniciada.
%		
%		A continuación se detallan las diferentes pestañas que aparecen en la ventana principal. Asumimos que ésta es una distribución con todos los módulos accesibles.
%			\begin{itemize}
%			\item Pestaña \emph{Stock}: Incorpora un buscador de productos por nombre, así como dos listas: Una primera que muestra los tipos de prenda resultados de la búsqueda, y otra que muestra los ítems de un tipo concreto de los seleccionados en la lista anterior. Además incorpora un botón que enlaza al formulario de ``Búsqueda avanzada'', otro que enlaza al formulario de ``Añadir nuevo producto'', un tercero que enlaza al formulario ``Solicitar reposición'', así como los campos necesarios para poder editar productos sin abrir un nuevo formulario.
%			\item Pestaña \emph{Empleados}: Incorpora un buscador de empleados por nombre, puesto, departamento o tienda, una lista de los empleados resultado de la búsqueda, una ficha que muestra toda la información sobre un empleado seleccionado de la lista anterior, así como tres botones: Uno para edición del empleado, que se realiza sobre el mismo formulario, otro para añadir empleado, que abre el formulario ``Nuevo empleado'', y un último para borrar el empleado seleccionado en la lista.
%			\item Pestaña \emph{Clientes}: Incorpora un buscador de clientes por nombre, una lista donde mostrar los resultados de la búsqueda, y una ficha del cliente que muestra todos sus datos, una lista de las últimas compras realizadas, e imágenes de dichas compras en un cuadro a parte. Además, aparecen de nuevo tres botones: Uno para edición del cliente, que se realiza sobre el mismo formulario, otro para dar de baja al cliente seleccionado de la lista, y otro para añadir un nuevo cliente, que lanza el formulario de ``Nuevo cliente''.
%			\item Pestaña \emph{Ventas}: Permite tanto la realización de una venta como la consulta de otra previas. Para la venta, hay una sección donde se encuentran todos los campos necesarios en su realización, asi como un botón para realizar la venta. En cuanto al historial, se encuentra en otra sección que contiene un buscador por vendedor, cliente, prenda, y/o fecha, así como una lista con todas las ventas resultado de la búsqueda.
%			\item Pestaña \emph{Gestión de tienda}: Incorpora información de la tienda actual (nombre, dirección, teléfono, email y una pequeña descripción), un mapa de la tienda editable (con imágenes de los distintos elementos existentes en el local (e.g.: estanterías, burros...)), un \gls{desplegable} con los diferentes elementos disponibles, y un panel informativo de la zona elegida en el mapa. Éste mostrará dos listas: Una con los productos vendidos en la zona, otra con los clientes que compran en esa zona, así como algunas estadísticas que incluyen, al menos, volumen de ventas anuales, edad media del comprador y gasto medio del comprador.
%			Por último, también está disponible la opción de crear tienda, que abre el formulario ``Nueva tienda''
%			\end{itemize}
%		\item \Gls{ventana} \emph{Añadir nuevo producto}: Presenta los campos necesarios para añadir un nuevo producto: (Prenda, tipo, nombre, año, temporada, diseñador, precio, talla(s), zona(s) de la tienda donde se encuentra). Posee un \gls{cuadroImagen} desde donde se abre un diálogo de sistema para agregar una imagen representativa del producto. Por último, un botón de ``Terminar'' que devuelve el control al formulario principal.
%		\item \Gls{ventana} \emph{Nuevo empleado}: Presenta los siguientes campos de información sobre el nuevo empleado: (Nombre, puesto, departamento, tienda, edad, sueldo). Posee un \gls{cuadroImagen} que abre un diálogo de sistema para agregar una imagen representativa del producto. Por último, un botón de ``Terminar'' que devuelve el \gls{foco} a la \gls{ventana} principal.
%		\item \Gls{ventana} \emph{Nuevo cliente}: Presenta los siguientes campos de información sobre el nuevo cliente: Nombre, edad, talla, teléfono e email. Por último, un botón de ``Terminar'' que devuelve el \gls{foco} a la \gls{ventana} principal.
%		\item \Gls{ventana} \emph{Búsqueda avanzada}:  Presenta los siguientes campos a rellenar opcionalmente para filtrar más o menos en profundidad la búsqueda: Diseñador, temporada, año, talla(s) y dos cuadros numéricos que indican el intervalo de precio a buscar. Por último un botón buscar devuelve la información y el \gls{foco} a la \gls{ventana} principal.
%		\item \Gls{ventana} \emph{Reposiciones}: Incorpora los siguientes campos: Referencia de prenda, fecha de pedido, número de pedido (autogenerado), cantidad(es) y talla(s), y un \gls{desplegable} que indica la prioridad del pedido (alta, media o baja). Por último un botón para efectuar el pedido que devuelve el \gls{foco} a la \gls{ventana} principal.
%		\item \Gls{ventana} \emph{Nueva tienda}: Posee los siguientes campos: Nombre de la tienda, situación, teléfono, email, y detalles varios que se quieran aportar. Un botón para terminar la creación devuelve el \gls{foco} a la \gls{ventana} principal.
		\end{enumerate}
	\item{\textbf{Interfaces de hardware }}

		Principalmente son periféricos\\
		\begin{enumerate}
		\item Interfaz de teclado: La aplicación debe ser capaz de responder ante eventos de teclado.
		\item Interfaz de ratón: La aplicación debe ser capaz de responder ante eventos de ratón, centrando el control de la aplicación en el elemento sobre el cual se realiza click.
		\item Interfaz mixta teclado-ratón: La aplicación debe ser capaz de ofrecer respuesta a combinaciones de teclas junto a clicks del ratón sobre la aplicación.	
		\item Interfaz de lector de código de barras: El sistema es capaz de interactuar con un lector de código de barras y obtener información de dicho dispositivo.
		\item Interfaz de impresora: La aplicación debe ser capaz de conectarse a una impresora con las que obtener las facturas para los clientes que así lo deseen.
		\end{enumerate}
	\item{\textbf{Interfaces de software }}
		\begin{enumerate}
		\item Interfaz de cuadros de diálogo de selección de archivo de Windows: La aplicación debe ser capaz de interactuar con los cuadros de diálogo de Windows para seleccionar archivos.
		\end{enumerate}
	\item{\textbf{Interfaces de comunicación }} 
		\begin{enumerate}
		\item La aplicación incorpora el controlador para interactuar siguiendo el protocolo \gls{LAN} para conectarse al servidor local tras realizar cualquier cambio susceptible de ser actualizado en la base de datos.
		\end{enumerate}
\end{description}
\section{Funciones}

Para descripción de las funcionalidades del sistema, se sigue el esquema que se detalla a continuación.
\begin{center}
	\begin{itemize}
		\item \texttt{Descripción}: Breve introducción de la funcionalidad.
		\item \texttt{Prioridad}: Nivel de rapidez con el que debe desarrollarse el requisito para avanzar en el proyecto.
		\item \texttt{Estabilidad}: Grado de estabilidad de cambio del requisito.
		\item  \texttt{Entrada}: Datos que la funcionalidad recibe.
		\item  \texttt{Salida}: Datos o resultados que la funcionalidad arroja.
		\item  \texttt{Origen}: Actor o proceso que inicia la funcionalidad.
		\item  \texttt{Destino}: Sistemas, servicios o procesos al que se dirige la funcionalidad.
		\item  \texttt{Necesita}: Sistemas, servicios o procesos necesarios para la ejecución de la funcionalidad.
		\item  \texttt{Acción}: Lo que se realiza.
		\item  \texttt{Precondición}: Situación indispensable para la ejecución de la función.
		\item  \texttt{Postcondición}: Situación que se cumple inmediatamente después de la realización de la función.
		\item  \texttt{Efectos laterales}: Otros efectos derivados de la realización de la función.
	\end{itemize}
\end{center}

		\begin{enumerate}
			\item \label{req:iniciarSesion}Requisito~\ref{req:iniciarSesion}: Iniciar sesión
				\begin{itemize}
					\item Descripción: Poder identificar al usuario de forma unívoca en la aplicación para registrar a su nombre los cambios que se realizcen en la sesión.
					\item Prioridad: Alta.
					\item Estabilidad: Alta.
					\item Entrada: Nombre y contraseña de usuario.
					\item Salida: Información sobre si el inicio de sesión se ha realzado correctamente o no.
					\item Origen: Persona que quiere iniciar la sesión.
					\item Destino: Dominio local y/o central según el tipo de empleado (si es de tienda o de departamento).
					\item Necesita: Base de datos de empleados.
					\item Acción: Inicio de sesión de un empleado.
					\item Precondición: El servidor local está iniciado y operativo.
					\item Postcondición: Empleado con sesión iniciada.
					\item Efectos laterales:
						\begin{enumerate}
							\item Bloqueo del sistema tras 5 intentos fallidos de inicio de sesión durante 5 minutos.
						\end{enumerate}
				\end{itemize}
			\item \label{req:centralLocal}Requisito~\ref{req:centralLocal}: Sincronización de dominio central con locales.
				\begin{itemize}
					\item Descripción: Las bases de datos locales mandan al dominio central los cambios registrados desde la última sincronización.
					\item Prioridad: Alta.
					\item Estabilidad: Alta.
					\item Entrada: Últimos cambios realizados en los servidores locales.
					\item Salida: Dominio central sincronizado con los datos de los dominios locales.
					\item Origen: Si la sincronización es automática, a la hora de cierre de tienda (ver pág. \pageref{horarioTienda}). Si es manual, cuando el mánager decida.
					\item Destino: Dominio central.
					\item Necesita: Conexión entre los dominios locales y el central. Ambos deben estar operativos.
					\item Acción: Actualización del dominio central.
					\item Precondición: Tener conexión establecida entre los dominios.
					\item Postcondición: La base de datos principal se actualiza con los nuevos datos recibidos.
					\item Efectos laterales: No se conocen.
				\end{itemize}
			\item \label{req:localCentral}Requisito~\ref{req:localCentral}: Sincronización de dominios locales con central.
				\begin{itemize}
					\item Descripción: Los dominios locales se conectan con la base de datos central y sincronizan sus datos.
					\item Prioridad: Alta.
					\item Estabilidad: Alta.
					\item Entrada: Datos del dominio central.
					\item Salida: Dominios locales sincronizados con el central.
					\item Origen: Si la sincronización es automática, a la hora de apertura de tienda (ver pág. \pageref{horarioTienda}). Si es manual, cuando el mánager decida.
					\item Destino: Dominios locales.
					\item Necesita: Conexión entre los dominios locales y el central.
					\item Acción: Sincronización entre dominios con el dominio central.
					\item Precondición: Tener conexión establecida entre los dominios.
					\item Postcondición: Los dominios locales se sincronizan con los nuevos datos recibidos.
					\item Efectos laterales: No se conocen.
				\end{itemize}
			\item \label{req:reestablecerContrasenia}Requisito~\ref{req:reestablecerContrasenia}: Recuperar contraseña. 
				\begin{itemize}
					\item Descripción: Un empleado cambia su contraseña para acceder al sistema. Previamente, el Dpto. de \gls{rrhh} ha asignado una temporal al usuario.
					\item Prioridad: Media.
					\item Estabilidad: Alta.
					\item Entrada: Identificador de usuario y nueva contraseña. Contraseña temporal.
					\item Salida: Mensaje verificando si se ha podido realizar el cambio.
					\item Origen: Acción del usuario que quiere cambiar su contraseña.
					\item Destino: Sistema.
					\item Necesita: Base de datos central.
					\item Acción: Actualiza la contraseña del empleado en cuestión.
					\item Precondición: Ninguna.
					\item Postcondición: Empleado con nueva contraseña.
					\item Efectos laterales: No se conocen.
				\end{itemize}
			\item \label{req:agregarClientes}Requisito~\ref{req:agregarClientes}: Agregar clientes a la aplicación.
				\begin{itemize}
					\item Descripción: Agregar a la base de datos un nuevo cliente que desea estar registrado en la misma.
					\item Prioridad: Alta.
					\item Estabilidad: Alta.
					\item Entrada: Datos del cliente (pueden encontrarse en la pág. \pageref{datosCliente}).
					\item Salida: Información sobre si el alta de cliente se ha realizado correctamente o no.
					\item Origen: Empleado que está dando de alta al nuevo cliente.
					\item Destino: Base de datos.
					\item Necesita: Base de datos.
					\item Acción: Dar de alta al cliente. Enviar un mensaje de bienvenida mediante \emph{notificar novedades y eventos} (R\ref{req:notificarNovedades}) a la dirección de email proporcionada.
					\item Precondición: Vendedor con sesión iniciada en la aplicación. Cliente dispuesto a ser registrado en la base de datos.
					\item Postcondición: Cliente registrado en la base de datos.
					\item Efectos laterales:
						\begin{enumerate}
							\item Puesta en cola de la petición si fallara la conexión o actualización de la base de datos.
						\end{enumerate}
				\end{itemize}
			\item \label{req:eliminarClientes}Requisito~\ref{req:eliminarClientes}:  Eliminar clientes de la aplicación.
				\begin{itemize}
					\item Descripción: Elimina los datos personales de un cliente manteniendo los datos de compras en una nueva ficha utilizada únicamente con fines estadísticos.
					\item Prioridad: Alta.
					\item Estabilidad: Alta.
					\item Entrada: Identificador de cliente que debe ser eliminado.
					\item Salida: Información sobre si se ha podido realizar la eliminación o no.
					\item Origen: Mánager del local, que ejecuta la acción.
					\item Destino: Base de datos.
					\item Necesita: Base de datos.
					\item Acción: Eliminación de los datos personales de un cliente.
					\item Precondición: \Gls{manager} con sesión iniciada en la aplicación. El cliente ha pedido su eliminación de la base de datos.
					\item Postcondición: Información personal del cliente eliminada. La información estadística se guardará en un modelo de cliente genérico. (\gls{clienteNoNominativo}).
					\item Efectos laterales:
						\begin{enumerate}
							\item Puesta en cola de la petición de eliminación si fallara la conexión o la actualización de la base de datos.
						\end{enumerate}
				\end{itemize}
			\item \label{req:eliminarDuplicados}Requisito~\ref{req:eliminarDuplicados}: Eliminar clientes duplicados de la base de datos.
				\begin{itemize}
					\item Descripción: Se eliminan datos repetidos o mal clasificados de la base de datos. Por la construcción de ésta, ésto sólo ocurre cuando un cliente se da de alta con nombres diferentes, que será el caso a tratar aquí.
					\item Prioridad: Baja.
					\item Estabilidad: Media.
					\item Entrada: Datos de los clientes que van a ``fundirse''.
					\item Salida: Un único cliente mezcla de los dos anteriores.
					\item Origen:  Mánager.
					\item Destino: Base de datos.
					\item Necesita: Base de datos.
					\item Acción:  Fusión de los datos de ambos clientes en uno solo. La información que posean los dos será unida manualmente por el usuario.
					\item Precondición: Mánager con sesión iniciada en la aplicación. Se ha detectado una redundancia en la base de datos.
					\item Postcondición: Un único cliente queda en la base de datos, eliminando por completo los dos primeros. Dicho cliente contendrá la información de ventas de los dos, y una unión del resto de información realizada por el usuario.
					\item Efectos laterales:
						\begin{enumerate}
							\item Puesta en cola de la petición de eliminación si fallara la conexión o la actualización de la base de datos.
						\end{enumerate}
				\end{itemize}
			\item \label{req:modificarCliente}Requisito~\ref{req:modificarCliente}: Modificar datos de cliente.
				\begin{itemize}
					\item Descripción: Se modifican datos de un cliente determinado, bien por petición suya, bien automáticamente desde el programa. (e.g.: al realizar una venta se actualizarán sus compras).
					\item Prioridad: Alta.
					\item Estabilidad: Alta.
					\item Entrada: Datos que deben modificarse en la ficha de cliente.
					\item Salida: Ficha de cliente actualizada con los nuevos datos.
					\item Origen: Procesos automáticos del programa (ventas, devoluciones,...) o empleado que manualmente va a modificar los datos.
					\item Destino: Base de datos.
					\item Necesita: Un cliente que modificar. Base de datos.
					\item Acción: Modificación de datos de cliente.
					\item Precondición: El cliente existe en la base de datos.
					\item Postcondición: Se actualiza la información del cliente en la base de datos. A partir de ahora al acceder dicho cliente se verá la nueva información.
					\item Efectos laterales: No se conocen.
				\end{itemize}
			\item \label{req:consultarDatosCliente}Requisito~\ref{req:consultarDatosCliente}: Consultar datos de clientes.
				\begin{itemize}
					\item Descripción: Muestra datos de los clientes.
					\item Prioridad: Media.
					\item Estabilidad: Alta.
					\item Entrada: Identificador de cliente.
					\item Salida: Datos del cliente. Si se exportan los datos, fichero con los datos obtenidos.
					\item Origen: Usuario de la aplicación que desea conocer los datos de un cliente.
					\item Destino: Pantalla. Presentación gráfica de los datos obtenidos.
					\item Necesita: Base de datos.
					\item Acción: Muestra los datos almacenados en el sistema de un cliente.
					\item Precondición: Usuario con sesión iniciada.
					\item Postcondición: La búsqueda se realiza satisfactoriamente y se obtienen los datos deseados. Los resultados se muestran en pantalla.
					\item Efectos laterales: No se conocen.
				\end{itemize}
			\item \label{req:mostrarEstadisticas}Requisito~\ref{req:mostrarEstadisticas}: Consultar estadísticas de clientes.
				\begin{itemize}
					\item Descripción: Se genera información a partir de los datos de compras de clientes sobre las ventas en un determinado rango de características.
					\item Prioridad: Media.
					\item Estabilidad: Media.
					\item Entrada: Datos y parámetros que se desean para la estadística. 
					\item Salida: Gráficas y datos generados sobre las ventas que se buscaron. Si se desea exportar, fichero con los datos obtenidos.
					\item Origen: Usuario de la aplicación que quiere conocer datos estadísticos de los clientes.
					\item Destino: Pantalla, presentación gráfica de los datos obtenidos. Sistema, se guarda copia de los datos generados para consultas posteriores.
					\item Necesita: Base de datos.
					\item Acción: Muestra las estadísticas de ventas.
					\item Precondición: Usuario con sesión iniciada.
					\item Postcondición: La búsqueda se realiza satisfactoriamente y se obtienen los datos deseados. Los resultados se muestran en pantalla.
					\item Efectos laterales: No se conocen.
				\end{itemize}
		\item \label{req:notificarNovedades}Requisito~\ref{req:notificarNovedades}: Notificar novedades y eventos a clientes.
				\begin{itemize}
					\item Descripción: Manda un email informativo sobre novedades a los clientes que desearon recibirlo.
					\item Prioridad: Media.
					\item Estabilidad: Alta.
					\item Entrada: Lista de clientes que desean recibir información. Cuerpo del mensaje.
					\item Salida: Información sobre los envíos a cada cliente (éxito o fallo de cada envío).
					\item Origen: Manualmente mediante acción del Dpto. Comercial y Márketing. Automáticamente cuando un nuevo cliente se registra.
					\item Destino: Servidor central, que se encargará de enviar los mensajes a nombre de la empresa.
					\item Necesita: Archivo adjunto a enviar, lista de emails a donde enviarlo.
					\item Acción: Envío de emails con archivo adjunto a los clientes que desean recibirlo.
					\item Precondición: El servidor central debe estar operativo, y se necesita conexión a base de datos local para extraer así la lista de clientes.
					\item Postcondición: Los emails son enviados a sus correspondientes destinatarios.
					\item Efectos laterales: No se conocen.
				\end{itemize}
				
		%%%%%%%%%%%%%%		GESTION TIENDA		%%%%%%%%%%%%%%%%%%
		
			\item \label{req:altaInventarioLocal}Requisito~\ref{req:altaInventarioLocal}: Dar de alta prendas en el inventario local.
				\begin{itemize}
					\item Descripción: Agrega a la base de datos del almacén de la tienda las nuevas adquisiciones.
					\item Prioridad: Alta.
					\item Estabilidad: Alta.
					\item Entrada: Albarán de entrada, con todos los datos de las prendas a añadir.
					\item Salida: Mensaje de confirmación de si se ha realizado el proceso con éxito. Base de datos actualizada.
					\item Origen: Acción del mánager de tienda.
					\item Destino: Base de datos local.
					\item Necesita: Base da datos local.
					\item Acción: Actualiza la base de datos con las nuevas prendas.
					\item Precondición: Conexión con la base de datos abierta, mánager con sesión iniciada.
					\item Postcondición: Se actualizan los datos del almacén.
					\item Efectos laterales: No se conocen.
				\end{itemize}
			\item \label{req:bajaInventarioLocal}Requisito~\ref{req:bajaInventarioLocal}: Dar de baja en inventario local.
				\begin{itemize}
					\item Descripción: Elimina elementos del almacén de la tienda registrados en la base de datos. Se genera un albarán con las prendas eliminadas.
					\item Prioridad: Alta.
					\item Estabilidad: Alta.
					\item Entrada: Identificador de prendas que van a ser dadas de baja.
					\item Salida: Mensaje de confirmación sobre el éxito de la operación. Base de datos actualizada. Alabarán con las prendas dadas de baja.
					\item Origen: Acción del mánager.
					\item Destino: Base de datos local.
					\item Necesita: Base de datos local.
					\item Acción: Eliminar un elemento de la lista de stock del almacén de la base de datos. 
					\item Precondición: Mánager con sesión iniciada. La prenda debe estar dada de alta en el almacén.
					\item Postcondición: Se actualizan los datos del almacén.
					\item Efectos laterales: No se conocen.
				\end{itemize}
			\item \label{req:modificarInventarioLocal}Requisito~\ref{req:modificarInventarioLocal}: Modificar inventario local.
				\begin{itemize}
					\item Descripción: Modifica datos sobre los elementos del inventario local. Si la modificación se debe a causa excepcional (robo,...), se genera un informe.
					\item Prioridad: Alta.
					\item Estabilidad: Alta.
					\item Entrada: Identificador(es) de prenda(s) a modificar. Nuevos datos que van a asignarse a la(s) prenda(s).
					\item Salida: Mensaje indicando el éxito o fracaso de la operación. Base de datos actualizada. Informe en caso de modificación excepcional.
					\item Origen: Acción del vendedor o procesos automáticos de inventario (ventas, devoluciones, reposiciones...). 
					\item Destino: Base de datos local.
					\item Necesita: Base de datos local.
					\item Acción: Actualiza la base de datos con la nueva información.
					\item Precondición: Vendedor con sesión iniciada.
					\item Postcondición: Base de datos actualizada. Informe en caso de modificación excepcional.
					\item Efectos laterales: No se conocen.
				\end{itemize}
			\item \label{req:modificarInventarioLocalExcepcional}Requisito~\ref{req:modificarInventarioLocalExcepcional}: Modificar inventario local por causa excepcional.
				\begin{itemize}
					\item Descripción: Modifica datos sobre los elementos del inventario local. La modificación se debe a causa excepcional (robo, regalo,...) y se genera un informe.
					\item Prioridad: Madia.
					\item Estabilidad: Alta.
					\item Entrada: Identificador(es) de prenda(s) a modificar. Cantidades sustraídas/regaladas/... de cada prenda.
					\item Salida: Mensaje indicando el éxito o fracaso de la operación. Base de datos actualizada. Informe detallado de la operación (a rellenar por el vendedor).
					\item Origen: Acción del vendedor.
					\item Destino: Base de datos local.
					\item Necesita: Base de datos local.
					\item Acción: Actualiza la base de datos con la nueva información.
					\item Precondición: Vendedor con sesión iniciada.
					\item Postcondición: Base de datos actualizada.
					\item Efectos laterales: No se conocen.
				\end{itemize}	
				
			\item \label{req:mostrarInventario}Requisito~\ref{req:mostrarInventario}: Mostrar inventario local.
				\begin{itemize}
					\item Descripción: Genera un listado con los artículos que se tiene en la tienda.
					\item Prioridad: Media.
					\item Estabilidad: Alta.
					\item Entrada: Datos de prendas en el inventario local.
					\item Salida: Lista con los artículos que tiene la tienda.
					\item Origen: Acción del venderdor.
					\item Destino: Pantalla. Se muestra por pantalla el listado deseado.
					\item Necesita: Acceso a la base de datos local.
					\item Acción: Muestra el listado de artículos que se tiene en la tienda.
					\item Precondición: Vendedor con sesión iniciada.
					\item Postcondición: Se obtiene el listado del stock que se tiene en tienda. Éste se muestra en pantalla.
					\item Efectos laterales: No se conocen.
				\end{itemize}
			\item \label{req:vender}Requisito~\ref{req:vender}: Tramitar venta.
				\begin{itemize}
					\item Descripción: Tramitar una venta a un cliente.
					\item Prioridad: Alta.
					\item Estabilidad: Alta.
					\item Entrada: Identificador de cliente, identificador de vendedor y lista de identificadores de objetos que van a ser vendidos. Método de pago.
					\item Salida: Información de venta.
					\item Origen: Acción del vendedor.
					\item Destino: Base de datos y pantalla, para mostrar la información de la venta.
					\item Necesita: Base de datos.
					\item Acción: Genera y guarda en la base de datos de ventas una nueva venta.
					\item Precondición: Vendedor con sesión iniciada, productos a vender seleccionados con stock disponible para la transacción.
					\item Postcondición: Los cambios de inventario se reflejan mediante \emph{modificar inventario} (R\ref{req:modificarInventarioLocal}) y los de cliente por medio de
						de \emph{modificar cliente} (R\ref{req:modificarCliente}).
					\item Efectos laterales:
						\begin{enumerate}
							\item Si el cliente no está registrado en la base de datos, la compra se anotará con cargo a \Gls{clienteNoNominativo}.
						\end{enumerate}
				\end{itemize}
			\item \label{req:pagarEfectivo}Requisito~\ref{req:pagarEfectivo}: Procesar pago en efectivo.
				\begin{itemize}
					\item Descripción: Pagar en efectivo una venta realizada.
					\item Prioridad: Alta.
					\item Estabilidad: Alta.
					\item Entrada: Importe recibido y coste de la venta, y si el cliente desea factura.
					\item Salida: Confirmación de pago. Diferencia entre la cantidad recibida y el coste. Ticket autogenerado.
					\item Origen: Automáticamente a través de \emph{tramitar venta} (R\ref{req:vender}) si el cliente deseó pagar en efectivo.
					\item Destino: Pantalla, mostrando confirmación del pago. Impresora, para imprimir ticket de venta.
					\item Necesita: Conexión con base de datos (*).
					\item Acción: Pago por parte del cliente al establecimiento.
					\item Precondición: Vendedor con sesión iniciada.
					\item Postcondición: Pago realizado correctamete.
					\item Efectos laterales:
						\begin{enumerate}
							\item (*) Los datos generados para la base de datos se quedan en cola si no se tiene conexión con la misma, y se realiza la actualización posteriormente.
							\item Si el cliente desea factura, se continúa en \emph{imprimir factura} (R\ref{req:imprimirFactura}).
						\end{enumerate}
				\end{itemize}
			\item \label{req:pagarTarjeta}Requisito~\ref{req:pagarTarjeta}: Procesar pago con tarjeta.
				\begin{itemize}
					\item Descripción: Pagar con tarjeta una venta realizada.
					\item Prioridad: Alta.
					\item Estabilidad: Alta.
					\item Entrada: Coste de la venta, marca de la tarjeta de crédito/débito recibida y si el cliente desea factura.
					\item Salida: Confirmación de pago. Ticket autogenerado.
					\item Origen: Automáticamente a través de \emph{tramitar venta} (R\ref{req:vender}) si el cliente deseó pagar con tarjeta.
					\item Destino: Pantalla, mostrando confirmación del pago. Impresora, para imprimir ticket de venta.
					\item Necesita: Conexión con base de datos de la tienda (*).
					\item Acción: Pago por parte del cliente al establecimiento.
					\item Precondición: Usuario con sesión iniciada.
					\item Postcondición: El pago se ha realizado correctamente.
					\item Efectos laterales:
						\begin{enumerate}
							\item (*) Los datos generados para la base de datos se quedan en cola si no se tiene conexión con la misma, y se realiza la actualización posteriormente.
							\item Si no se consigue conexión con la entidad bancaria, se ofrece la posibilidad de pagar en efectivo (R\ref{req:pagarEfectivo}).
							\item Si el cliente desea factura, se continúa en \emph{imprimir factura} (R\ref{req:imprimirFactura}).
						\end{enumerate}
				\end{itemize}
			\item \label{req:pagarVale}Requisito~\ref{req:pagarVale}: Procesar pago con vale.
				\begin{itemize}
					\item Descripción: Pagar mediante vale una venta realizada.
					\item Prioridad: Alta.
					\item Estabilidad: Alta.
					\item Entrada: Identificador de vale y si el cliente desea factura.
					\item Salida: Confirmación de pago. Diferencia entre el valor del vale y el coste. Ticket autogenerado. Vale saldado y nuevo vale en caso de diferencia positiva entre el valor
					del vale y el importe de la venta.
					\item Origen: Automáticamente a través de \emph{tramitar venta} (R\ref{req:vender}) si el cliente deseó pagar con vale.
					\item Destino: Pantalla, mostrando confirmación del pago. Impresora, para imprimir ticket de venta.
					\item Necesita: Conexión con base de datos (*).
					\item Acción: Canjear vale como medio de pago por una compra.
					\item Precondición: Vendedor con sesión iniciada. El vale entregado no está caducado ni canjeado.
					\item Postcondición: El vale se marca como canjeado.
					\item Efectos laterales:
						\begin{enumerate}
							\item (*) Los datos generados para la base de datos se quedan en cola si no se tiene conexión con la misma, y se realiza la actualización posteriormente.
							\item En caso de ser de mayor valor el vale que la compra, se genera un nuevo vale por valor la diferencia entre el valor del primero y el coste de compra.
							\item En caso de ser de menor valor el vale que la compra, se generará una nueva transacción por valor la diferencia entre el coste y el valor del vale, que deberá ser abonada siguiendo uno de los métodos de pago disponibles.
						\end{enumerate}
				\end{itemize}
			\item \label{req:imprimirFactura}Requisito~\ref{req:imprimirFactura}: Ordenar impresión de factura.
				\begin{itemize}
					\item Descripción: Imprimir la factura generada por la compra para entregársela al cliente.
					\item Prioridad: Alta.
					\item Estabilidad: Alta.
					\item Entrada: Datos originados en \emph{tramitar venta}, nombre y DNI ó CIF del cliente según corresponda.
					\item Salida: Confirmación de impresión. Factura impresa con los datos de la compra.
					\item Origen: Automáticamente a través de \emph{tramitar venta} (R\ref{req:tramitarVenta}) si el cliente deseaba factura o por acción del empleado si se desea una factura en papel.
					\item Destino: Impresora y sistema, pues una copia electónica de la factura se almacena en el sistema.
					\item Necesita: Base de datos. Datos de la venta.
					\item Acción: Impresión de la factura correspondiente a una compra.
					\item Precondición: No hay.
					\item Postcondición: Factura impresa.
					\item Efectos laterales: No se conocen.
				\end{itemize}
			\item \label{req:consultarVentasTienda}Requisito~\ref{req:consultarVentasTienda}: Consultar ventas en tienda.
				\begin{itemize}
					\item Descripción: Mostrar información relativa a las ventas de una tienda específica. Información que puede ser consultada: Distribución de ventas por talla, edad, tipo de prenda; ventas por meses, ventas por temporada, ventas en relación a un importe concreto, ventas distribuidas por días y horas.
					\item Prioridad: Alta.
					\item Estabilidad: Alta.
					\item Entrada: Parámetros que se quieren utilizar para filtrar la información.
					\item Salida: Datos solicitados relativos a las ventas de la tienda. Si se desea exportar, fichero con los datos obtenidos.
					\item Origen: Acción del mánager o personal del Dpto. Comercial y Márketing o automáticamente cuando \emph{consulta general de ventas} (R\ref{req:consultarVentasGeneral}) esté en funcionamiento.
					\item Destino: Pantalla, mostrando la información deseada.
					\item Necesita: Conexión con base de datos.
					\item Acción: Dar a conocer los datos relativos a las ventas requeridos por el mánager.
					\item Precondición: El \gls{manager} de la tienda con sesión iniciada que solicita una búsqueda de datos.
					\item Postcondición: Se muestran los datos pedidos con relación a las ventas.
					\item Efectos laterales: No se conocen.
				\end{itemize}

			\item \label{req:consultarVentasGeneral}Requisito~\ref{req:consultarVentasGeneral}: Consulta general de ventas.
				\begin{itemize}
					\item Descripción: Mostrar información de ventas realizadas a nivel de un zona concreta, tanto a nivel de área, como nacional o internacional.
					\item Prioridad: Alta.
					\item Estabilidad: Media.
					\item Entrada: Parámetros que se quieren utilizar para filtrar la información. 
					\item Salida: Datos solicitados relativos a las ventas. Si se desea exportar, fichero con los datos obtenidos.
					\item Origen: Acción del empleado del Dpto. Comercial y Márketing o Área Mánager.
					\item Destino: Pantalla, mostrando la información deseada.
					\item Necesita: Conexión con base de datos.
					\item Acción: Se realiza un recorrido por todas las tiendas invocando \emph{consultar centas en tienda} (R\ref{req:consultarVentasTienda}) con los parámetros introducidos.
					\item Precondición: El empleado con los permisos necesarios ha iniciado sesión.
					\item Postcondición: Se muestran los datos pedidos con relación a las ventas correspondientes a la zona indicada.
					\item Efectos laterales: No se conocen.
				\end{itemize}

			\item \label{req:solicitarReposiciones}Requisito~\ref{req:solicitarReposiciones}: Solicitar reposiciones.
				\begin{itemize}
					\item Descripción: Solicitar la reposición de prendas que estén agotadas en el almacén de la tienda o que se prevea que lo vayan a estar.
					\item Prioridad: Alta.
					\item Estabilidad: Alta.
					\item Entrada: Identificador(es) de prenda(s) y cantidad(es) que se desean.
					\item Salida: Mensaje de solicitud pendiente de enviar.
					\item Origen: Acción del vendedor.
					\item Destino: Base de datos central, donde se guarda la solicitud.
					\item Necesita: Base de datos local.
					\item Acción: Generar una solicitud de reposición.
					\item Precondición:  Vendedor con sesión iniciada.
					\item Postcondición: Petición al sitema de la reposición de las prendas generada correctamente.
					\item Efectos laterales: No se conocen.
				\end{itemize}

			\item \label{req:tramitarReposicion}Requisito~\ref{req:tramitarReposicion}: Tramitar reposición.
				\begin{itemize}
					\item Descripción: Tramitar la solicitud de reposición generada en \emph{solicitar reposición} (R\ref{req:solicitarReposiciones}) La solicitud de reponer alguna prenda enviada por una tienda es procesada en el Dpto. Comercial y Marketing. Se comprueba la disponibilidad de la prenda en los distintos almacenes y se procede a su envío. Las prendas enviadas a la tienda pueden provenir tanto del almacen central como de otra tienda.
					\item Prioridad: Alta.
					\item Estabilidad: Alta.
					\item Entrada: Identificador de solicitud.
					\item Salida: Orden de envío de las reposiciones (y correspondiente notificación) si se encuentran disponibles. En caso contrario, envío de notificación de reposición no posible.
					\item Origen: Empleado del Dpto. Comercial y Marketing que tramita la reposición.
					\item Destino: Bases de datos del local de destino y de origen si la prenda está disponible para su reposición.
					\item Necesita: Base de datos.
					\item Acción: Buscar la disponibilidad de una prenda para enviarla a una tienda que ha solicitado su reposición.
					\item Precondición: El empleado del Dpto. Comercial y Márketing debe haber iniciado sesión previamente, se ha recibido una solicitud de reposición.
					\item Postcondición: Envío de las reposiciones a la tienda que las solicitó.
					\item Efectos laterales:
						\begin{enumerate}
							\item No se encuentran prendas disponibles en otros almacenes y se informa a la tienda que su solicitud ha sido denegada.
						\end{enumerate}
				\end{itemize}
			\item \label{req:hacerDevolucion}Requisito~\ref{req:hacerDevolucion}: Hacer devolución.
				\begin{itemize}
					\item Descripción: Registrar nuevamente una prenda que fue vendida. Al cliente en cuestión se le concede un crédito con el valor de la prenda, este crédito se genera en forma de vale para ser canjeado en un plazo de 30 días naturales.
					\item Prioridad: Alta.
					\item Estabilidad: Alta.
					\item Entrada: Identificador de cliente, identificador(es) de prenda(s) a devolver.
					\item Salida: Notificación de resultado de la devolución y vale por valor del importe devuelto.
					\item Origen: Acción del empleado que devuelve la prenda.
					\item Destino: Base de datos, impresora.
					\item Necesita: Conexión con la base de datos.
					\item Acción: Da de baja la prenda en las compras realizadas por el cliente y de alta en el inventario de la tienda. Se genera un vale para el cliente con el valor de la prenda devuelta.
					\item Precondición: El vendedor tiene sesión iniciada, se tiene la prenda en buen estado, con su etiqueta y el ticket de compra.
					\item Postcondición: La prenda queda registrada en el inventario y retirada de la lista de compras del cliente, y se genera un vale.
					\item Efectos laterales:
						\begin{enumerate}
							\item Si el cliente no está registrado en la base de datos, la operación se realizará con \gls{clienteNoNominativo}.
						\end{enumerate}
				\end{itemize}

			\item \label{req:modificarVisual}Requisito~\ref{req:modificarVisual}: Modificar visual de la tienda.
				\begin{itemize}
					\item Descripción: Actualizar la distribución de artículos en la tienda.
					\item Prioridad: Alta.
					\item Estabilidad: Media.
					\item Entrada: Identificadores de prendas y su nueva ubicación.
					\item Salida: Ubicación de las prendas actualizada y nueva distribución.
					\item Origen: Acción del empleado que va a cambiar la distribución del local.
					\item Destino: Base de datos y pantalla, mostrando la nueva distribución.
					\item Necesita: -
					\item Acción: Modificar la distribución de los artículos guardada en la base de datos.
					\item Precondición: El \gls{manager} tiene su sesión iniciada y ya se ha cambiado la distribución física de la tienda.
					\item Postcondición: La nueva distribución queda guardada en la base de datos.
					\item Efectos laterales: No se conocen.
				\end{itemize}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%REQUISITOS DE PERSONAL%%%%%%%%%%%%%%

\item \label{req:altaPersonal}Requisito~\ref{req:altaPersonal}: Dar de alta empleado.
				\begin{itemize}
					\item Descripción: Registrar un empleado en la base de datos y asignarles usuario y contraseña para el uso de la aplicación.
					\item Prioridad: Alta.
					\item Estabilidad: Alta.
					\item Entrada: Datos del empleado (pueden encontrarse en la pág. \pageref{datosEmpleado}).
					\item Salida: Mensaje confirmando si el alta ha sido exitosa o no.
					\item Origen: Acción del empleado del Dpto. de \gls{rrhh}.
					\item Destino: Base de datos central.
					\item Necesita: -
					\item Acción: Registrar un empleado en el sistema.
					\item Precondición: El empleado encargado de esta acción debe haber iniciado sesión previamente.
					\item Postcondición: El nuevo empleado queda registrado correctamente en el sistema.
					\item Efectos laterales:
						\begin{enumerate}
							\item Se ofrece reintentar la acción si algún dato no se ha introducido o es erróneo.
						\end{enumerate}
				\end{itemize}
	
		\item \label{req:bajaEmpleado}Requisito~\ref{req:bajaEmpleado}: Dar de baja a un empleado.
				\begin{itemize}
					\item Descripción: Poder eliminar un empleado del sistema (lo desactiva, no lo elimina).
					\item Prioridad: Alta.
					\item Estabilidad: Alta.
					\item Entrada: Identificador de empleado a desactivar.
					\item Salida: Información sobre si el empleado se ha dado de baja correctamente o no.
					\item Origen: Acción del empleado del Dpto. de \gls{rrhh}.
					\item Destino: Base de datos central.
					\item Necesita: Base de datos central.
					\item Acción: Las credenciales del usuario se desactivan impidiendo así que éste vuelva a iniciar sesión en la aplicación.
					\item Precondición: El empleado encargado de esta acción debe haber iniciado sesión previamente.
					\item Postcondición: El ex-empleado aparece ``desactivado'' en la base de datos central.
					\item Efectos laterales:
						\begin{enumerate}
							\item Ofrece reintentar la acción si el \gls{NIF} introducido es erróneo o no existe en la base de datos, o si el empleado no ha podido darse de baja.
						\end{enumerate}
				\end{itemize}

\item \label{req:eliminarPersonal}Requisito~\ref{req:eliminarPersonal}: Eliminar datos del personal.
				\begin{itemize}
					\item Descripción: Poder eliminar los datos de un empleado en la base de datos.
					\item Prioridad: Alta.
					\item Estabilidad: Alta.
					\item Entrada: Identificador de empleado a eliminar.
					\item Salida: Información sobre si el empleado se ha eliminado correctamente o no
					\item Origen: Acción del empleado del Dpto. de \gls{rrhh}.
					\item Destino: Base de datos.
					\item Necesita: Base de datos central.
					\item Acción: Eliminar completamente los datos personales de un empleado.
					\item Precondición: El empleado en cuestión debe haber solicitado la eliminación de sus datos de la base de datos, y no haber sido ya eliminado.
					\item Postcondición: Se eliminan los datos de carácter personal, transfiriendo los datos relativos a su actividad en la empresa a un nuevo empleado con identificador autogenerado.
					\item Efectos laterales:
						\begin{enumerate}
							\item Ofrece reintentar la acción si el \gls{NIF} introducido es erróneo o no existe, o si los datos del empleado no se han podido modificar correctamente.
						\end{enumerate}
				\end{itemize}		
				
\item \label{req:modificarPersonal}Requisito~\ref{req:modificarPersonal}: Modificar datos del personal.
				\begin{itemize}
					\item Descripción: Modificar los datos del personal, tanto laborales como personales.
					\item Prioridad: Media.
					\item Estabilidad: Alta.
					\item Entrada: Identificador de empleado a eliminar. Nuevos datos.
					\item Salida: Información sobre si el empleado se ha eliminado correctamente o no
					\item Origen: Acción del empleado del Dpto. de \gls{rrhh}.
					\item Destino: Base de datos.
					\item Necesita: Base de datos central.
					\item Acción: Modificar datos del empleado en la base de datos central.
					\item Precondición: El empleado del Dpto. de \gls{rrhh} debe tener iniciada la sesión.
					\item Postcondición: Se modifican los datos del empleado.
					\item Efectos laterales:
						\begin{enumerate}
							\item Ofrece reintentar la acción si el \gls{NIF} introducido es erróneo o no existe, o si los datos del empleado no se han podido modificar correctamente.
						\end{enumerate}
				\end{itemize}	

\item \label{req:consultarPersonal}Requisito~\ref{req:consultarPersonal}: Consultar datos del personal.
				\begin{itemize}
					\item Descripción: Consultar los datos de un empleado de la base de datos.
					\item Prioridad: Alta.
					\item Estabilidad: Alta.
					\item Entrada: Identificador de empleado a consultar.
					\item Salida: Datos del empleado, sólo si el empleado a consultar está por debajo del ejecutor en la cadena de mando. En caso contrario, error.
					\item Origen: Acción de quién lleve a cabo la consulta.
					\item Destino: Base de datos central. 
					\item Necesita: -
					\item Acción: Consultar datos de un empleado de la base de datos.
					\item Precondición: El empleado encargado de esta acción debe haber iniciado sesión previamente, el servidor local está iniciado y operativo.
					\item Postcondición: Se muestran los datos del empleado por pantalla.
					\item Efectos laterales:
						\begin{enumerate}
							\item Ofrece reintentar la acción si el \gls{NIF} introducido es erróneo o no existe, o si el empleado no se ha podido encontrar o mostrar correctamente.
						\end{enumerate}
				\end{itemize}		
				
		%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
		%%%REQUISITOS DE ALMACEN CENTRAL%%%
		\item \label{req:altaAlmacenCentral}Requisito~\ref{req:altaAlmacenCentral}: Dar de alta en almacén central.
				\begin{itemize}
					\item Descripción: Da de alta la mercancía en el almacén central.
					\item Prioridad: Alta.
					\item Estabilidad: Alta.
					\item Entrada: Identificador de albarán de entrega.
					\item Salida: Información sobre si el contenido del albarán se ha dado de alta correctamente o no.
					\item Origen: Acción del Dpto. Comercial y Márketing.
					\item Destino: Base de datos central. Pantalla, mostrando el mensaje de confirmación.
					\item Necesita: Base de datos central.
					\item Acción: Volcar los datos de las prendas contenidas en el albarán del fabricante a la base de datos. Se ofrece la posibilidad de imprimir las etiquetas de las prendas.
					\item Precondición: El empleado encargado de esta acción debe haber iniciado sesión previamente.
					\item Postcondición: La prenda queda registrada en el almacén central, y se genera su etiqueta.
					\item Efectos laterales:
						\begin{enumerate}
							\item Ofrece reintentar la acción si algún dato no se ha introducido o es erróneo.
						\end{enumerate}
				\end{itemize}

	
		\item \label{req:bajaAlmacenCentral}Requisito~\ref{req:bajaAlmacenCentral}: Dar de baja en almacén central.
				\begin{itemize}
					\item Descripción: Se encarga de dar de baja del almacén central la ropa retirada.
					\item Prioridad: Alta.
					\item Estabilidad: Alta.
					\item Entrada: Identificador(es) de prendas.
					\item Salida: Información sobre si la prenda se ha eliminado correctamente o no.
					\item Origen: Acción del empleado del Dpto. Comercial y Márketing.
					\item Destino: Base de datos central. Pantalla, mostrando el mensaje de confirmación.
					\item Necesita: Base de datos central.
					\item Acción: Eliminar las prendas que se deseen del almacén central.
					\item Precondición: El empleado encargado de esta acción debe haber iniciado sesión previamente.
					\item Postcondición: La prenda queda eliminada del almacén central.
					\item Efectos laterales:
						\begin{enumerate}
							\item Ofrece reintentar la acción si algún código introducido es erróneo o si alguna prenda no se ha podido eliminar correctamente.
						\end{enumerate}
				\end{itemize}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\item \label{req:modificarAlmacenCentralSalidas}Requisito~\ref{req:modificarAlmacenCentralSalidas}: Tramitar salidas del almacén central.
				\begin{itemize}
					\item Descripción: Modifica los datos de existencias del almacén central por salida de mercancía.
					\item Prioridad: Alta.
					\item Estabilidad: Alta.
					\item Entrada: Identificadores y cantidad de prendas que van a salir. Can
					\item Salida: Mensaje confirmando si la salida de prendas se ha realizado correctamente o no.
					\item Origen: De forma manual, por acción del empleado del Dpto. Comercial y Márketing. De forma automática por una reposición que afecte al almacén central (R\ref{req:tramitarReposicion}).
					\item Destino: Base de datos central. Pantalla, mostrando el mensaje de confirmación.
					\item Necesita: Base de datos central.
					\item Acción: Se modifican las existencias del almacén central y se genera un albarán con los identificadores de prendas que han salido del almacén.
					\item Precondición: El empleado encargado de esta acción debe haber iniciado sesión previamente.
					\item Postcondición: Las existencias del almacén central quedan actualizadas.
					\item Efectos laterales:
						\begin{enumerate}
							\item Modifica la ubicación de las prendas que salen a \emph{en itinerario} hasta que lleguen a su destino.
						\end{enumerate}
				\end{itemize}		
				
\item \label{req:modificarAlmacenCentralSalidasExcepcionales}Requisito~\ref{req:modificarAlmacenCentralSalidasExcepcionales}: Tramitar salidas excepcionales del almacén central.
				\begin{itemize}
					\item Descripción: Modifica los datos de existencias del almacén central por salida de mercancía de forma excepcional (robos,...)
					\item Prioridad: Media.
					\item Estabilidad: Alta.
					\item Entrada: Identificadores y cantidad de prendas que van a salir.
					\item Salida: Mensaje confirmando si la salida de prendas se ha realizado correctamente o no.
					\item Origen: De forma exclusivamente manual, por acción del empleado del Dpto. Comercial y Márketing.
					\item Destino: Base de datos central. Pantalla, mostrando el mensaje de confirmación.
					\item Necesita: Base de datos central.
					\item Acción: Se modifican las existencias del almacén central y se genera un albarán con los identificadores de prendas que han salido del almacén, además de un informe detallado de la modificación excepcional.
					\item Precondición: El empleado encargado de esta acción debe haber iniciado sesión previamente.
					\item Postcondición: Las existencias del almacén central quedan actualizadas.
					\item Efectos laterales: No se conocen.
				\end{itemize}	
				
\item \label{req:modificarAlmacenCentralEntradas}Requisito~\ref{req:modificarAlmacenCentralSalidas}: Tramitar entradas al almacén central.
				\begin{itemize}
					\item Descripción: Modifica los datos de existencias del almacén central por entrada de mercancía.
					\item Prioridad: Alta.
					\item Estabilidad: Alta.
					\item Entrada: Identificador de alabarán de entrega.
					\item Salida: Mensaje confirmando si la entrada de prendas se ha realizado correctamente o no.
					\item Origen: Acción del empleado del Dpto. Comercial y Márketing.
					\item Destino: Base de datos central. Pantalla, mostrando el mensaje de confirmación.
					\item Necesita: Base de datos central.
					\item Acción: Se modifican las existencias del almacén central.
					\item Precondición: El empleado encargado de esta acción debe haber iniciado sesión previamente.
					\item Postcondición: Las existencias del almacén central quedan actualizadas.
					\item Efectos laterales:
						\begin{enumerate}
							\item Modifica la ubicación de las prendas que entran a \emph{en almacén central}.
						\end{enumerate}
				\end{itemize}	
				
				\item \label{req:modificarAlmacenCentralPrecio}Requisito~\ref{req:modificarAlmacenCentralPrecio}: Modificar precios de prendas.
				\begin{itemize}
					\item Descripción: Modifica el precio de las prendas de los almacenes.
					\item Prioridad: Alta.
					\item Estabilidad: Alta.
					\item Entrada: Identificadores de prendas que van a sufrir modificaciones y nuevo precio de cada una de ellas. Si el cambio se debe a rebajas.
					\item Salida: Mensaje confirmando el cambio de precio se ha realizado correctamente o no. En caso de ser solicitado, nuevas etiquetas con los precios actualizados.
					\item Origen: Acción del empleado del Dpto. Comercial y Márketing.
					\item Destino: Base de datos central. Pantalla, mostrando el mensaje de confirmación.
					\item Necesita: Base de datos central.
					\item Acción: Se modifican los precios de las prendas seleccionadas. Se genera una notificación con los nuevos precios para informar a las tiendas del cambio. Asimismo, se crean las nuevas etiquetas 
						(si la modificación de precios es por rebajas, aparecen el precio anterior y el nuevo).
					\item Precondición: El empleado encargado de esta acción debe haber iniciado sesión previamente.
					\item Postcondición: Los precios de las prendas quedan actualizados.
					\item Efectos laterales: No se conocen.
				\end{itemize}	

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\item \label{req:consultarAlmacenCentral}Requisito~\ref{req:consultarAlmacenCentral}: Consultar almacén central.
				\begin{itemize}
					\item Descripción: El usuario puede consultar la información de los diferentes inventarios locales, así como consultas por prendas para gestionar reposiciones, entregas y demás.
					\item Prioridad: Alta.
					\item Estabilidad: Alta.
					\item Entrada: Filtros de consulta (identificadores de tienda, de prenda,...).
					\item Salida: Información solicitada.			
					\item Origen: Si es de forma manual, acción del empleado del Dpto. Comercial y Márketing. Si es de forma automática, invocado por otros procesos de búsqueda y consulta (por ejemplo \emph{tramitar reposición}  (R\ref{req:tramitarReposicion})).
					\item Destino: Base de datos central. Pantalla, mostrando los datos obtenidos.
					\item Necesita: Base de datos central.
					\item Acción: Consultas multimodales (prendas, inventarios locales, portes de mercancía,...)
					\item Precondición: El empleado encargado de esta acción debe haber iniciado sesión previamente.
					\item Postcondición: La información solicitada es obtenida.
					\item Efectos laterales:
						\begin{enumerate}
							\item Ofrece reintentar alguno de los datos introducidos es incorrecto.
						\end{enumerate}
				\end{itemize}		
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
		\end{enumerate}
\section{Requisitos de rendimiento}
	\begin{itemize}
	\item El servidor central estará capacitado para recibir 10 peticiones simultáneas de los servidores locales de los establecimientos.
	\item La cantidad de datos que tendrá que manejar el servidor local será de 300 empleados, 50.000 clientes, 10.000 prendas (1.000 por temporada).
	\item La aplicación tendrá referenciados en un momento dado hasta 3000 entradas de las diversas tablas de la base de datos, asegurando con esto un funcionamiento fluido. Los datos de dichas entradas serán pedidos al servidor local en el momento en el que se seleccionen desde la aplicación.
	\item El servidor local debe soportar simultáneamente las peticiones de todos los terminales de la tienda con tiempos de respuesta a los mismos no superiores al segundo.
	\end{itemize}
\section{Requisitos lógicos}
	La base de datos contará con tablas, las cuales harán referencias entre ellas, resultando esto en un uso más eficiente de la memoria y una mejor búsqueda. Dichas tablas son:
	\begin{itemize}
	\item Prendas: Registra su código, precio, modelo, talla, color, diseñador, e imagen. Debe tener capacidad para al menos 10000 prendas diferentes, debido a que la misma prenda con ligeras variaciones genera una nueva entrada en dicha tabla. De esta manera guardamos aproximadamente las prendas de unas 10 temporadas para poder tener suficientes datos sobre qué compraron los clientes recientemente (intervalo de 5 años).
	\item Empleados: Registra contraseña, nombre, apellidos, nómina, puesto, departamento, ventas y foto. Debe tener capacidad para al menos 300 empleados, dando cabida a los que trabajan en un momento dado en la empresa, más contratos temporales y datos recientes sobre ex-empleados.
	\item Clientes: Guarda un perfil del cliente compuesto por nombre, email, teléfono, tienda habitual, y compras recientes. Tiene espacio para al menos 50000 clientes, para poder abastecer cualquier demanda de registro por parte de los clientes.
	\item Ventas: Registra los productos, empleados, y cliente involucrados en una venta. Tiene espacio para 200000 ventas, siendo capaz de guardar el histórico de al menos 5 años en cualquier momento.
	\item Tiendas: Registra toda la información referida al local y ubicación de la tienda. Tiene capacidad para al menos 100 tiendas.
	\end{itemize}

\section{Restricciones de diseño}
	\begin{itemize}
	\item El desarrollo del proyecto, siendo éste desarrollado con \gls{java} en su versión 1.7.0 del \gls{compilador} oficial de Oracle, está garantizado a funcionar tal como se concibió mientras se continúe el desarrollo con dicha plataforma. Si en algún momento se requiriera por parte del desarrollador o se desease por parte de la empresa cambiarlo, la funcionalidad e implementación podrán cambiar en un mínimo grado para adaptarse a modificaciones oficiales del \gls{compilador}.
	\item Asimismo, el entorno de desarrollo utilizado será \gls{eclipse} (Provisto desde la fundación \gls{eclipse}), y la aplicación no incorporará ninguna funcionalidad no implementable mediante el mismo. Cualquier cambio en el entorno de desarrollo que afectara a la aplicación será asumido por la empresa realizadora del proyecto con impacto mínimo (pero probable) sobre la funcionalidad del sistema.
	\item El sistema de bases de datos estará realizado sobre \gls{mysql}, restringiéndose la base de datos a las limitaciones derivadas de \gls{mysql}.
	\end{itemize}	
\section{Atributos del sistema software}
Hay una serie de atributos que se requieren en nuestro sistema.
		\begin{enumerate}
		\item Fiabilidad \\
			Para garantizar que nuestro programa realice sus funciones sarisfactoriamente, se trabaja siempre sobre la base de datos local para evitar conflictos entre terminales de venta.
			Además, el programa guarda localmente las últimas imágenes accedidas para evitar sobrecargar el servidor.
		\item Disponibilidad \\
			Entre los factores que grarantizan el funcionamiento del programa en el momento deseado están:
			\begin{itemize}
			\item El tiempo de búsqueda de productos, empleados o clientes en la aplicación será inferior a 1 segundo. (petición de búsqueda al servidor local)
			\item El servidor local debe ser capaz de enviar respuesta en menos de 1 segundo, extendiéndose hasta un máximo de 10 por posibles picos de carga.
			%%algo más?
			\end{itemize}
		\item Seguridad \\
			Para proteger el software de acesso accidental o malicioso, de uso, modificación, destrucción o publicación, en nuestro sistema 
			se utilizan los sistemas de encriptación \gls{RSA}-1024 para los datos de los clientes y empleados y \gls{RSA}-2048 para las contraseñas.
			Ante posibles pérdidas se realizarán copias de seguridad periódicas a un tercer disco duro de igual o mayor capacidad que el servidor central.
		\item Mantenimiento \\
			Se realizará mantenimiento correctivo (corregir errores), mantenimiento adaptivo (modificar el software de acuerdo con el entorno),
            mantenimiento perfectivo (añadir nueva funcionalidad que se ha visto que hace falta, este caso puede darse también por petición del cliente) y 
            mantenimiento preventivo en menor medida (consiste en cambiar el producto pensando en mejoras futuras).
			Siempre procurando mantener la facilidad de comprender, corregir, adaptar y mejorar el software.
		\end{enumerate}